home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / strategy / xpuzzles.3 / xpuzzles / xpuzzles-5.3.1 / xoct / OctP.h < prev    next >
C/C++ Source or Header  |  1996-02-05  |  3KB  |  150 lines

  1. /*
  2. # X-BASED OCTAHEDRON
  3. #
  4. #  OctP.h
  5. #
  6. ###
  7. #
  8. #  Copyright (c) 1994 - 96    David Albert Bagley, bagleyd@hertz.njit.edu
  9. #
  10. #                   All Rights Reserved
  11. #
  12. #  Permission to use, copy, modify, and distribute this software and
  13. #  its documentation for any purpose and without fee is hereby granted,
  14. #  provided that the above copyright notice appear in all copies and
  15. #  that both that copyright notice and this permission notice appear in
  16. #  supporting documentation, and that the name of the author not be
  17. #  used in advertising or publicity pertaining to distribution of the
  18. #  software without specific, written prior permission.
  19. #
  20. #  This program is distributed in the hope that it will be "playable",
  21. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  23. #
  24. */
  25.  
  26. /* Private header file for Oct */
  27.  
  28. #ifndef _OctP_h
  29. #define _OctP_h
  30.  
  31. #include "Oct.h"
  32.  
  33. /*** random number generator ***/
  34. /* insert your favorite */
  35. extern void SetRNG();
  36. extern long LongRNG();
  37. #define SRAND(X) SetRNG((long) X)
  38. #define LRAND() LongRNG()
  39.  
  40. #define NRAND(X) ((int)(LRAND()%(X)))
  41.  
  42. #define SYMBOL ':'
  43.  
  44. #define IGNORE (-1)
  45. #define TOP 0
  46. #define TR 1
  47. #define RIGHT 2
  48. #define BR 3
  49. #define BOTTOM 4
  50. #define BL 5
  51. #define LEFT 6
  52. #define TL 7
  53. #define COORD 8
  54. #define CW 9
  55. #define CCW 15
  56.  
  57. /* The following are in xoct.c also */
  58. #define MINOCTAS 1
  59. #define PERIOD3 3
  60. #define PERIOD4 4
  61. #define BOTH 5
  62. #define MAXMODES 3
  63.  
  64. #define DEFAULTMODE PERIOD4
  65. #define DEFAULTOCTAS 3
  66. #define MAXFACES 8
  67. #define SAME 0
  68. #define OPPOSITE 1
  69. #define UP 0
  70. #define DOWN 1
  71. #define MAXVIEWS 2
  72. #define MAXSIDES (MAXFACES/MAXVIEWS) 
  73. #define MAXORIENT (3*MAXSIDES)
  74.  
  75. #define ABS(a) (((a)<0)?(-a):(a))
  76. #define SIGN(a) (((a)<0)?(-1):1)
  77. #define MIN(a,b) (((int)(a)<(int)(b))?(int)(a):(int)(b))
  78. #define MAX(a,b) (((int)(a)>(int)(b))?(int)(a):(int)(b))
  79.  
  80. typedef struct _OctLoc
  81. {
  82.   int face, rotation;
  83. } OctLoc;
  84.  
  85. typedef struct _OctPart
  86. {
  87.   Pixel foreground;
  88.   Pixel borderColor;
  89.   Pixel faceColor[MAXFACES];
  90.   OctLoc *octaLoc[MAXFACES];
  91.   OctLoc *faceLoc;
  92.   OctLoc *rowLoc[MAXORIENT/2];
  93.   int currentFace, currentPosition;
  94.   Boolean started, practice, orient, vertical, mono, sticky;
  95.   int mode, depth;
  96.   int size, sizeSize;
  97.   Position delta;
  98.   Position octaLength;
  99.   Position faceLength;
  100.   Position viewLength, viewMiddle;
  101.   Position orientLineLength;
  102.   XPoint puzzleSize;
  103.   XPoint puzzleOffset;
  104.   GC puzzleGC;
  105.   GC borderGC;
  106.   GC faceGC[MAXFACES];
  107.   GC inverseGC;
  108.   String faceName[MAXFACES];
  109.   XtCallbackList select;
  110. } OctPart;
  111.  
  112. typedef struct _OctRec
  113. {
  114.   CorePart core;
  115.   OctPart oct;
  116. } OctRec;
  117.  
  118. /* This gets around C's inability to do inheritance */
  119. typedef struct _OctClassPart
  120. {
  121.   int ignore;
  122. } OctClassPart;
  123.  
  124. typedef struct _OctClassRec
  125. {
  126.   CoreClassPart core_class;
  127.   OctClassPart oct_class;
  128. } OctClassRec;
  129.  
  130. extern OctClassRec octClassRec;
  131. extern OctLoc *startLoc[MAXFACES];
  132.  
  133. extern void MoveOct();
  134. /*extern void SolvePolyhedrons();*/ /* For future auto-solver */
  135. extern void DrawAllPolyhedrons();
  136. extern Boolean CheckSolved();
  137. extern void InitMoves();
  138. extern void PutMove();
  139. extern void GetMove();
  140. extern int MadeMoves();
  141. extern void FlushMoves();
  142. extern int NumMoves();
  143. extern void ScanMoves();
  144. extern void PrintMoves();
  145. extern void ScanStartPosition();
  146. extern void PrintStartPosition();
  147. extern void SetStartPosition();
  148.  
  149. #endif /* _OctP_h */
  150.